package indi.zhifa.recipe.bailan.busy.service.impl;

import cn.hutool.core.util.RandomUtil;
import indi.zhifa.recipe.bailan.busy.enums.EOrmEntityStatus;
import indi.zhifa.recipe.bailan.busy.entity.po.OrmTestEntity;

import java.util.ArrayList;
import java.util.List;

public class BaseOrmServiceImpl {
    protected List<OrmTestEntity> getInitOrmTestEntityList(String pPrefix) {

        final int appCnt = 3;
        final int[] moduleCnts = new int[]{2,3,5};

        final int statusCnt = EOrmEntityStatus.values().length - 1;
        final int[] entityCnts = new int[]{8,3,5,2,1};

        final int valueMin = 1;
        final int valueMax = 100;

        int appNo = 0;
        int moduleNo = 0;
        int entityNo = 0;

        List<OrmTestEntity> ormTestEntityList = new ArrayList<>();
        for(int appIdx=0;appIdx<appCnt;appIdx++){
            int moduleCnt = moduleCnts[appIdx];
            appNo++;
            String appCode = pPrefix+"_app_"+(appIdx+1);
            String appName = pPrefix+"-应用-"+appNo;
            for (int moduleIdx=0;moduleIdx<moduleCnt;moduleIdx++){
                moduleNo++;
                String moduleCode = pPrefix+"_mode_"+(moduleIdx+1);
                String moduleName = pPrefix+"-模块-"+moduleNo;
                for(int statusIdx = 0;statusIdx<statusCnt;statusIdx++){
                    int entityCnt = entityCnts[statusIdx];
                    for(int i=0;i<entityCnt;i++){
                        entityNo++;
                        String entityCode = pPrefix+"_entity_"+entityNo;
                        String entityName = pPrefix+"-ORM测试实体-"+entityNo;
                        String description = "这个是"+entityName+"。是"+appName+"下的"+moduleName+"的一个应用。由"+pPrefix+"创建";
                        int status = statusIdx+1;
                        int value = RandomUtil.randomInt(valueMin,valueMax);
                        OrmTestEntity ormTestEntity = new OrmTestEntity();
                        ormTestEntity.initWithCreate();
                        ormTestEntity.setAppCode(appCode);
                        ormTestEntity.setAppName(appName);
                        ormTestEntity.setModuleCode(moduleCode);
                        ormTestEntity.setModuleName(moduleName);
                        ormTestEntity.setCode(entityCode);
                        ormTestEntity.setName(entityName);
                        ormTestEntity.setDescription(description);
                        ormTestEntity.setStatus(EOrmEntityStatus.values()[statusIdx+1]);
                        ormTestEntity.setValue(value);
                        ormTestEntityList.add(ormTestEntity);
                    }
                }
            }
        }
        return ormTestEntityList;
    }
}
